package com.cfpl.admin_service.controller;

import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.cfpl.admin_service.VO.PageQueryCondition;
import com.cfpl.admin_service.service.VegetableVarietyService;
import com.cfpl.project_common.pojo.VegetableVariety;
import com.cfpl.project_common.result.BaseResult;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*;

import java.util.List;

/**
 * @Auther: wrp
 * @Date: 2023/10/16 - 10:40
 * @Description: com.cfpl.admin_service.controller
 * @version: 1.0
 */
@RestController
@Slf4j
@RequestMapping("/vegVariety")
@Api(tags = "果蔬种类相关接口")
public class VegetableVarietyController  {

    @Autowired
    private VegetableVarietyService vegVarietyService;

    /**
     * 功能描述：分页查询果蔬种类，可以按照条件模糊查询
     *
     * @param currentPage 当前页
     * @param pageSize    每页条数
     * @param condition   查询条件
     * @return 分页对象
     */
    @ApiOperation("分页查询所有果蔬种类")
    @GetMapping("/queryAllVegVar")
    public BaseResult<PageQueryCondition> queryAll(int currentPage, int pageSize, String condition) {
        Page<VegetableVariety> page = vegVarietyService.queryPage(currentPage, pageSize, condition);
        PageQueryCondition queryCondition = new PageQueryCondition(page, condition);
        return BaseResult.ok(queryCondition);
    }

    /**
     * 功能描述：添加果蔬种类
     *
     * @param vegetableVariety 果蔬种类
     * @return 果蔬种类对象
     */
    @ApiOperation("新增果蔬种类")
    @PostMapping("/addVegVariety")
    public BaseResult<String> addVegVariety(@RequestBody VegetableVariety vegetableVariety) {
        vegVarietyService.addVegetableVariety(vegetableVariety);
        return BaseResult.ok("success");
    }

    /**
     * 功能描述：根据果蔬种类id查询一条果蔬种类
     *
     * @param id 果蔬种类id
     * @return 查询到的果蔬对象
     */
    @ApiOperation("根据id查询果蔬种类")
    @GetMapping("/queryVegVarietyById/{id}")
    public BaseResult<VegetableVariety> queryVegVarietyById(@PathVariable("id") Long id) {
        VegetableVariety vegVariety = vegVarietyService.queryVegetableVarietyById(id);
        return BaseResult.ok(vegVariety);
    }

    /**
     * 功能描述：删除果蔬种类
     *
     * @param id 果蔬种类ID
     * @return
     */
    @ApiOperation("根据id删除果蔬种类")
    @DeleteMapping("/deleteVegetableVarietyById/{id}")
    public BaseResult<String> deleteVegetableVarietyById(@PathVariable("id") Long id) {
        VegetableVariety vegVariety = vegVarietyService.queryVegetableVarietyById(id);
        if (vegVariety != null) {
            vegVarietyService.removeVegetableVarietyById(id);
        }
        return BaseResult.ok();
    }

    /**
     * 功能描述：修改果蔬种类
     *
     * @param vegetableVariety 要修改的果蔬种类对象
     * @return 修改后的果蔬种类对象
     */
    @ApiOperation("修改果蔬种类")
    @PutMapping("/modifyVegVarietyById")
    public BaseResult modifyVegVarietyById(@RequestBody VegetableVariety vegetableVariety) {
        vegVarietyService.updateVegVariety(vegetableVariety);
        return BaseResult.ok(vegetableVariety);
    }

    /**
     * 功能描述：批量删除果蔬种类
     *
     * @param Ids  多个果蔬种类id
     * @return
     */
    @ApiOperation("批量删除果蔬种类")
    @DeleteMapping("/deleteVegVarietyList")
    public BaseResult<VegetableVariety> deleteVegVarietyList(@RequestParam("Ids")List<Long> Ids) {
        vegVarietyService.deleteBatchByIds(Ids);
        return BaseResult.ok();
    }

}